/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ants;
import java.awt.Point;
/**
 *
 * @author lnx
 */
public class AntsBehave{
    int MaxCarry=3;
    int id;
    int type;
    int vel;
    int atk;
    int def;
    int food;
    Point place;
    int hp;
    boolean regresar;
    private int behave;
    //private int mov = 0;
    //private int max;
    private int dist = 0;
    private int dir = 4;
    Conocimiento conocimiento[];
    int pk[][];
    
    AntsBehave (int iden, int tipo, int a, int b, int be){
        place = new Point();
        conocimiento = null;
        regresar = false;
        /* tipos:
         * 0 - Guerrera
         * 1 - Exploradora
         * 2 - Trabajadora
         */
        place.x = a;
        place.y = b;
        id=iden;
        setpk(-1, null, null); 
        switch(tipo) {
            case 0:
                type=0;
                vel=1;
                atk=2;
                def=1;
                hp=4;
                break;
            case 1:
                type=1;
                vel=3;
                atk=1;
                def=0;
                hp=3;
                break;
            case 2:
                type=2;
                vel=2;
                atk=1;
                def=1;
                hp=6;
                food=0;
                break;
        }
        
        behave = be;
        /*
        switch(tipo){
            case 0: max = 1; break;
            case 1: max = 3; break;
            case 2: max = 2; break;
        }
        max++;
        */
    }
    public void setBehave(int b){
        if(type==Constantes.explorer_id){
            if(b==Constantes.e_mcc){
                 regresar = true;
            }else{
                 regresar = false;
            }
        }else if(type==Constantes.worker_id){
            if(b==Constantes.w_raccc){
                regresar = true;
            }else{
                regresar = false;
            }
        }else if(type==Constantes.warrior_id){
            regresar = false;
        }
        behave = b;
    }
    public int getBehave(){
        return behave;
    }
    /*
    public boolean nMove(){
        if(((mov++)%max) == max)
            return false;
        else
            return true;
    }
    */
    public void setDir(int d){
        dir = (Math.abs((d+1)-9)%9);//guarda de donde viene.
    }
    
    public void setDist(int d){
        dist = d;
    }
    
    public int getDir(){
        return dir;
    }
    
    public int getDist(){
        return dist;
    }
    void move(int dir){
        switch(dir){
            case 0:
                place.y--;
                place.x--;
                break;
            case 1:
                place.x--;
                break;
            case 2:
                place.x--;
                place.y++;
                break;
            case 3:
                place.y--;
                break;
            case 4:
                
                break;
            case 5:
                place.y++;
                break;
            case 6:
                place.x++;
                place.y--;
                break;
            case 7:
                place.x++;
                break;
            case 8:
                place.y++;
                place.x++;
                break;
    }
    }
    public void setpk(int obj, Perspective_k lolwut, Conocimiento c[]){
        pk = new int [9][4];
        for (int i = 0; i < pk.length;i++){
            for(int j = 0; j > pk[i].length; j++){
                pk[i][j] = 0;
            }
        }
        c = null;
        lolwut = null;
    }
    
    public void getfloorknowledge(int kn[][]){
        return;
    }
    void take(int AFood){
        int cargo=0;
        if(MaxCarry>AFood){
         cargo=AFood;   
         AFood=0;
        }else{
            cargo=MaxCarry;
            AFood-=MaxCarry;
        }
        this.food+=cargo;
    }
    void attack(){
        
    }
    void score(){
        
    }
    int comida_cargada(){
        return food;
    }
    public void getinfo(int kn[][]){
        pk = kn;
    }
    
    void setConocimiento(Conocimiento knowledge [], Perspective_k tk){
        
       conocimiento = knowledge;
       setpk(-1, tk, knowledge);
    }
    
    
    void conocimientoMerge(Conocimiento nuevoConocimiento[], Perspective_k tk){
        Conocimiento[] temp = conocimiento;
        
        for(int x=0;x<temp.length;x++){
            Conocimiento element =temp[x];
            if(element.player == 0 && element.tipo == 0){
                setpk(x, tk, nuevoConocimiento);
            }
            
        }
    }
    
    Conocimiento [] getConocimiento(){
        return conocimiento;
    }
}
